package com.entity.yaml

import com.annotations.DefaultValue
import io.github.stream29.jsonschemagenerator.Description
import kotlinx.serialization.Serializable

/**
 * 压缩配置
 */
@Serializable
data class Compress(
    @property:Description("JavaScript压缩配置")
    val js: CompressJs = CompressJs(),
    @property:Description("图片压缩配置")
    val image: CompressImage = CompressImage()
)

/**
 * 图片压缩配置
 */
@Serializable
data class CompressImage(
    /**
     * 压缩图片质量
     */
    @property:Description("压缩图片质量")
    @DefaultValue("null")
    val quality: Int? = null,
    @property:Description("忽略压缩的文件列表")
    val ignoreFile: List<String> = emptyList()
)

/**
 * JavaScript压缩配置
 */
@Serializable
data class CompressJs(
    /**
     * 压缩资源配置表
     *
     * 例如：[**\\config*.js]
     *
     * @see java.nio.file.FileSystem.getPathMatcher
     */
    @property:Description("压缩资源配置表，例如：[**\\\\config*.js] @see java.nio.file.FileSystem.getPathMatcher")
    val config: List<String> = emptyList()
)
